﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using System.Web.UI;
using System.Web.UI.WebControls;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Data;
using System.IO;
using System.Text;

/// <summary>
/// Summary description for GeraArquivo
/// </summary>
public class GeraArquivo : System.Web.UI.Page
{
    ConexaoMDBD Command = new ConexaoMDBD();
    
    public GeraArquivo()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    public DataSet dsResultado(String obj, String cmd, String Ambiente, String Sistema, String Usuario, String TeamProject)
    {
        OracleCommand cmdOP = Command.cmdMDBD(cmd);

        cmdOP.Parameters.Add(new OracleParameter("V_AMBIENTE", OracleDbType.Varchar2, 255, ParameterDirection.Input)).Value = Ambiente;
        cmdOP.Parameters.Add(new OracleParameter("V_SISTEMA", OracleDbType.Varchar2, 255, ParameterDirection.Input)).Value = Sistema;
        cmdOP.Parameters.Add(new OracleParameter("V_USUARIO", OracleDbType.Varchar2, 255, ParameterDirection.Input)).Value = Usuario;
        cmdOP.Parameters.Add(new OracleParameter("V_TEAM_PROJECT", OracleDbType.Varchar2, 255, ParameterDirection.Input)).Value = TeamProject; 

        //if (obj == "TABELAS")
        //{
        //    cmdOP.Parameters.Add(new OracleParameter("V_TEAM_PROJECT", OracleDbType.Varchar2, 255, ParameterDirection.Input)).Value = TeamProject; 
        //}

        cmdOP.Parameters.Add(new OracleParameter("V_RESULTADO_SAIDA", OracleDbType.RefCursor, ParameterDirection.Output));

        OracleDataAdapter daResultado = new OracleDataAdapter();
        daResultado.SelectCommand = cmdOP;

        DataSet dsResultado = new DataSet();

        daResultado.Fill(dsResultado, "Resultado");

        cmdOP.Connection.Dispose();
        cmdOP.Connection.Close();

        return dsResultado;
    }

    public String NomeDiretorio(String obj, String TeamProject)
    {
        String NomeDiretorio = "";

        switch (obj)
        {
            case "TABELAS":
                NomeDiretorio = @Server.MapPath("") + "\\DseProj\\SinaXX\\ORACLE\\DEV\\ObjetosBanco\\Structure\\Tables".Replace("SinaXX", TeamProject);
                break;

            case "CONSTRAINTS":
                NomeDiretorio = @Server.MapPath("") + "\\DseProj\\SinaXX\\ORACLE\\DEV\\ObjetosBanco\\Structure\\Tables\\Constraints".Replace("SinaXX", TeamProject);
                break;

            case "PRIMARY KEYS":
                NomeDiretorio = @Server.MapPath("") + "\\DseProj\\SinaXX\\ORACLE\\DEV\\ObjetosBanco\\Structure\\Tables\\Constraints".Replace("SinaXX", TeamProject);
                break;

            case "UNIQUE CONSTRAINTS":
                NomeDiretorio = @Server.MapPath("") + "\\DseProj\\SinaXX\\ORACLE\\DEV\\ObjetosBanco\\Structure\\Tables\\Constraints".Replace("SinaXX", TeamProject);
                break;

            case "ÍNDICES":
                NomeDiretorio = @Server.MapPath("") + "\\DseProj\\SinaXX\\ORACLE\\DEV\\ObjetosBanco\\Structure\\Tables\\Indexes".Replace("SinaXX", TeamProject);
                break;

            case "FOREIGN KEYS":
                NomeDiretorio = @Server.MapPath("") + "\\DseProj\\SinaXX\\ORACLE\\DEV\\ObjetosBanco\\Structure\\Tables\\Foreign Keys".Replace("SinaXX", TeamProject);
                break;

            case "IV":
                NomeDiretorio = @Server.MapPath("") + "\\" + "AA_" + Session.SessionID;
                break;
        }

        if (Directory.Exists(NomeDiretorio))
        {
            Directory.Delete(NomeDiretorio, true);
        }

        Directory.CreateDirectory(NomeDiretorio);

        return NomeDiretorio;
    }

    public String GravaArquivo(String NomeDiretorio, DataSet dsArquivo, Int32 ColunaNomeObjeto, Int32 ColunaCreate)
    {
        String GravaArquivo = "";

        foreach (DataRow drArquivo in dsArquivo.Tables[0].Rows)
        {
            String NomeArquivo = NomeDiretorio + @"\" + drArquivo[ColunaNomeObjeto].ToString() + ".sql";
            String[] NovaLinha = drArquivo[ColunaCreate].ToString().Split(new Char[] { '\n' });

            StreamWriter Arquivo = new StreamWriter(NomeArquivo, true);

            foreach (String Texto in NovaLinha)
            {
                Arquivo.WriteLine(Texto);
            }

            Arquivo.WriteLine();
            Arquivo.Close();
        }

        return GravaArquivo;
    }
}
